package com.tea.app.moudles.controller;

import com.tea.app.moudles.service.GoodsServiceImpl;
import com.tea.common.entity.app.Goods;
import com.tea.common.entity.app.dto.GoodsDTO;
import com.tea.common.entity.app.vo.GoodsMenuVO;
import com.tea.common.common.util.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;
import java.util.Collections;
import java.util.Map;

/**
 * 商品控制层
 */
@Api(tags = "商品服务")
@RestController
@RequestMapping("/goods")
public class GoodsController {
    @Resource
    private GoodsServiceImpl goodsService;

    /**
     * 获取要显示的商品菜单列表
     * @param storeId 门店ID
     * @return 商品菜单列表
     */
    @ApiOperation("获取要显示的商品菜单列表")
    @GetMapping("/goodsMenu/list")
    public Result<List<GoodsMenuVO>> getGoodsMenuDetailList(@RequestParam(value = "storeId", required = true) Long storeId) {
        // 调用服务层方法获取商品菜单列表
        return Result.ok(goodsService.getGoodsMenuDetailList(storeId));
    }

    /**
     * 根据商品ID列表获取商品信息
     * @param params 请求参数，包含商品ID列表
     * @return 商品信息列表
     */
    @PostMapping("/list/ids")
    public Result<List<Goods>> getGoodsByIds(@RequestBody Map<String, List<Long>> params) {
        // 从请求参数中获取商品ID列表
        List<Long> goodsIds = params.get("goodsIds");
        // 如果商品ID列表为空或不存在，则返回空列表
        if (goodsIds == null || goodsIds.isEmpty()) {
            return Result.ok(Collections.emptyList());
        }
        // 调用服务层方法获取商品信息列表
        return Result.ok(goodsService.listByIds(goodsIds));
    }

    /**
     * 获取指定门店的商品菜单列表
     * @param storeId 门店ID
     * @return 商品菜单列表
     */
    @ApiOperation("获取指定门店的商品菜单列表")
    @GetMapping("/goodsMenu/store/{storeId}")
    public Result<List<GoodsMenuVO>> getGoodsMenuDetailListByStore(@PathVariable("storeId") Long storeId) {
        // 调用服务层方法获取商品菜单列表
        return Result.ok(goodsService.getGoodsMenuDetailList(storeId));
    }
    @GetMapping("/getAllGoods")
    public Result<List<Goods>> getAllGoods() {
        return Result.ok(goodsService.getAllGoods());
    }
}

